Python 批量修改文件名

Python 批量修改文件名

👹

起因

  • 由于下载的视频所带的字幕命名不当,导致PotPlayer播放器无法识别对应字幕(其实PotPlayer播放器可以设置自己模糊寻找字幕文件)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import os
    import operator

    lsAll = os.listdir("./")
    for k, v in enumerate(lsAll):
    if(os.path.isdir(v) == True ):
    path = os.getcwd()+'/'+v+'/'
    os.chdir(path)
    strlsAll = os.listdir("./")
    #🥝🥝🥝🥝🥝🥝🥝🥝🥝🥝🥝🥝这个for循环用来给每个子文件夹重命名
    for v in strlsAll:
    if (operator.contains(v,'.srt')):
    FileName, fileType = os.path.splitext(v)
    print(FileName)
    os.rename(v,FileName[:-3]+fileType)
    os.chdir('../')
  • 解释一下

    • 首先列出本文件夹中所有文件夹,程序进入第一个文件夹为符合后缀的文件命名,命名完成,程序返回上一级目录,再为第二个文件夹中的文件命名,依此类推

ChatGPT版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import os
import shutil

def rename_files():
# 获取当前目录路径
current_dir = os.getcwd()

# 遍历当前目录及其子目录中的所有文件夹
for root, dirs, files in os.walk(current_dir):
# 遍历当前文件夹中的所有文件
for file in files:
# 判断是否为视频文件或字幕文件
if file.endswith('.mp4') or file.endswith('.srt') or file.endswith('.vtt'):
# 获取当前文件名的前3个字符
new_name = file[:3]

# 查找当前文件夹中是否已经存在同名文件
i = 1
while os.path.exists(os.path.join(root, new_name + '_' + str(i) + os.path.splitext(file)[1])):
i += 1

# 构造新的文件名
new_name = new_name + '_' + str(i) + os.path.splitext(file)[1]

# 对文件进行重命名
shutil.move(os.path.join(root, file), os.path.join(root, new_name))

if __name__ == '__main__':
rename_files()
作者

发布于

2022-08-06

更新于

2023-11-23

许可协议